跳到主要内容

转换器脚本(Converter Scripts)

Rive 提供了多个内置转换器(Converters),如 Convert to StringRound

当内置功能不能满足需求时,你可以通过脚本创建自定义转换器(Converter)。

背景可参考:数据转换器(Data Converters)

示例(Examples)

创建转换器(Creating a Converter)

创建新脚本,并选择 转换器(Converter) 类型。

转换器脚本结构(Anatomy)

type MyConverter = {}

-- Called once when the script initializes.
function init(self: MyConverter): boolean
return true
end

-- Converts the property value.
function convert(self: MyConverter, input: DataInputs): DataOutput
local dv: DataValueNumber = DataValue.number()

if input:isNumber() then
dv.value = (input :: DataValueNumber).value + 1
else
dv.value = 0 -- 0 if input is not a number
end

return dv
end

-- For 2-way data binding, converts the target value back to the source
function reverseConvert(self: MyConverter, input: DataOutput): DataInputs
local dv: DataValueNumber = DataValue.number()

if input:isNumber() then
-- Example: Subtract 1 from the target number
dv.value = (input :: DataValueNumber).value - 1
else
dv.value = 0 -- 0 if target is not a number
end

return dv
end

-- Return a factory function that builds the converter instance.
-- Rive calls this when the script is created, passing back a table
-- containing its lifecycle functions and any default values.
return function(): Converter<MyConverter, DataValueNumber, DataValueNumber>
return {
init = init,
convert = convert,
reverseConvert = reverseConvert,
}
end

使用脚本创建转换器

  1. 在数据面板(Data panel)点击 +
  2. 选择 Converters → Script → MyConverter

Create converter with a script

添加输入(Adding Inputs)

请参考 Script Inputs